home *** CD-ROM | disk | FTP | other *** search
- #define OLDROUTINELOCATIONS 0
- #define OLDROUTINENAMES 0
- #define SystemSevenOrLater 1
-
- #ifndef __FONTS__
- # include <Fonts.h>
- #endif
-
- #ifndef __DIALOGS__
- # include <Dialogs.h>
- #endif
-
- #ifndef __PROCESSES__
- # include <Processes.h>
- #endif
-
- #ifndef __OSUTILS__
- # include <OSUtils.h>
- #endif
-
- #ifndef __RESOURCES__
- # include <Resources.h>
- #endif
-
- #ifndef __TRAPS__
- # include <Traps.h>
- #endif
-
- static pascal OSErr InitMac (void)
- {
- MaxApplZone ( );
- InitGraf (&(qd.thePort));
- InitFonts ( );
- InitWindows ( );
- InitMenus ( );
- TEInit ( );
- InitDialogs (nil);
-
- return noErr;
- }
-
- typedef struct
- {
- short flags;
- Size preferred,
- minimum;
- }
- tSizeResource, *tSizeResourceP, **tSizeResourceH;
-
- typedef pascal Handle (*vGet1Resource) (ResType resType, short resID);
-
- static Size gPreferredLaunchSize;
- static vGet1Resource gGet1Resource;
-
- static pascal Handle MyGet1ResourceC (ResType resType, short resID)
- {
- long savedA5 = SetCurrentA5 ( );
- Handle result = gGet1Resource (resType,resID);
-
- if (resType == 'SIZE' && !ResError ( ) && result)
- {
- tSizeResourceH sizeResourceH = (tSizeResourceH) result;
- (**sizeResourceH).preferred = gPreferredLaunchSize;
- }
-
- SetA5 (savedA5);
- return result;
- }
-
- static asm pascal Handle MyGet1ResourceAsm (ResType resType, short resID)
- {
- MOVE.L A1,-(A7) // save reg
- MOVE.L D1,-(A7) // save reg
- MOVE.L D2,-(A7) // save reg
- SUBQ.L #4,A7 // room for result
- MOVE.L 22(A7),-(A7) // push copy of resType
- MOVE.W 24(A7),-(A7) // push copy of resID
- JSR MyGet1ResourceC // do work
- MOVE.L (A7)+,22(A7) // copy and pop result
- MOVE.L (A7)+,D2 // restore reg
- MOVE.L (A7)+,D1 // restore reg
- MOVE.L (A7)+,A1 // restore reg
- MOVE.L (A7)+,A0 // ready return thru A0
- ADDQ.L #6,A7 // pop args
- JMP (A0) // phone home
- }
-
- static pascal OSErr LaunchWithSize (const FSSpec *fssP, Size size)
- {
- OSErr err = noErr;
-
- LaunchPBPtr lpbp = (LaunchPBPtr) NewPtrClear (sizeof (*lpbp));
- if (!(err = MemError ( )))
- {
- lpbp->launchBlockID = extendedBlock;
- lpbp->launchEPBLength = extendedBlockLen;
- lpbp->launchControlFlags = launchContinue | launchNoFileFlags;
- lpbp->launchAppSpec = (FSSpecPtr) fssP;
-
- gPreferredLaunchSize = size;
-
- gGet1Resource = (vGet1Resource) GetToolTrapAddress (_Get1Resource);
- SetToolTrapAddress ((UniversalProcPtr) MyGet1ResourceAsm, _Get1Resource);
- {
- err = LaunchApplication (lpbp);
- }
- SetToolTrapAddress ((UniversalProcPtr) gGet1Resource, _Get1Resource);
-
- DisposePtr ((Ptr) lpbp);
- if (!err) err = MemError ( );
- }
-
- return err;
- }
-
- void main (void)
- {
- if (InitMac ( ))
- SysBeep (10);
- else
- {
- OSErr err = noErr;
- FSSpec fss;
-
- if (!(err = FSMakeFSSpec (0,0,"\pLaunchFodder",&fss)))
- if (!(err = LaunchWithSize (&fss, 1024L * 1024L)))
- ;
- }
- }
-